home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / linux / cm4000_cs.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  2KB  |  63 lines

  1. #ifndef    _CM4000_H_
  2. #define    _CM4000_H_
  3.  
  4. #include <linux/types.h>
  5.  
  6. #define    MAX_ATR            33
  7.  
  8. #define    CM4000_MAX_DEV        4
  9.  
  10. /* those two structures are passed via ioctl() from/to userspace.  They are
  11.  * used by existing userspace programs, so I kepth the awkward "bIFSD" naming
  12.  * not to break compilation of userspace apps. -HW */
  13.  
  14. typedef struct atreq {
  15.     __s32 atr_len;
  16.     unsigned char atr[64];
  17.     __s32 power_act;
  18.     unsigned char bIFSD;
  19.     unsigned char bIFSC;
  20. } atreq_t;
  21.  
  22.  
  23. /* what is particularly stupid in the original driver is the arch-dependant
  24.  * member sizes. This leads to CONFIG_COMPAT breakage, since 32bit userspace
  25.  * will lay out the structure members differently than the 64bit kernel.
  26.  *
  27.  * I've changed "ptsreq.protocol" from "unsigned long" to "__u32".
  28.  * On 32bit this will make no difference.  With 64bit kernels, it will make
  29.  * 32bit apps work, too.
  30.  */
  31.  
  32. typedef struct ptsreq {
  33.     __u32 protocol; /*T=0: 2^0, T=1:  2^1*/
  34.      unsigned char flags;
  35.      unsigned char pts1;
  36.      unsigned char pts2;
  37.     unsigned char pts3;
  38. } ptsreq_t;
  39.  
  40. #define    CM_IOC_MAGIC        'c'
  41. #define    CM_IOC_MAXNR            255
  42.  
  43. #define    CM_IOCGSTATUS        _IOR (CM_IOC_MAGIC, 0, unsigned char *)
  44. #define    CM_IOCGATR        _IOWR(CM_IOC_MAGIC, 1, atreq_t *)
  45. #define    CM_IOCSPTS        _IOW (CM_IOC_MAGIC, 2, ptsreq_t *)
  46. #define    CM_IOCSRDR        _IO  (CM_IOC_MAGIC, 3)
  47. #define CM_IOCARDOFF            _IO  (CM_IOC_MAGIC, 4)
  48.  
  49. #define CM_IOSDBGLVL            _IOW(CM_IOC_MAGIC, 250, int*)
  50.  
  51. /* card and device states */
  52. #define    CM_CARD_INSERTED        0x01
  53. #define    CM_CARD_POWERED            0x02
  54. #define    CM_ATR_PRESENT            0x04
  55. #define    CM_ATR_VALID             0x08
  56. #define    CM_STATE_VALID            0x0f
  57. /* extra info only from CM4000 */
  58. #define    CM_NO_READER            0x10
  59. #define    CM_BAD_CARD            0x20
  60.  
  61.  
  62. #endif    /* _CM4000_H_ */
  63.